using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace FastReport.Utils
{
    internal static class FileUtils
    {
        public static string GetRelativePath(string absPath, string baseDirectoryPath)
        {
            char[] separators = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
            baseDirectoryPath = Path.GetFullPath(baseDirectoryPath);
            absPath = Path.GetFullPath(absPath);
            baseDirectoryPath = baseDirectoryPath.TrimEnd(separators);

            string[] bPath = baseDirectoryPath.Split(separators);
            string[] aPath = absPath.Split(separators);
            int indx = 0;
            while (indx < Math.Min(bPath.Length, aPath.Length))
            {
                if (String.Compare(aPath[indx], bPath[indx], true) != 0)
                    break;
                indx++;
            }
            // no matches, return absPath
            if (indx == 0)
                return absPath;

            string result = "";
            for (int i = indx; i < bPath.Length; i++)
            {
                result += ".." + Path.DirectorySeparatorChar;
            }
            result += String.Join(Path.DirectorySeparatorChar.ToString(), aPath, indx, aPath.Length - indx);
            return result;
        }
    }
}
